package com.Singleton;

/**
 * 静态内部类实现单例模式
 * Singleton类在加载的时候，静态内部类没有加载到内存中去，
 * 只有当调用getInstance方法的时候，从而触发SingletonHolder.INSTANCE,
 * SingletonHolder才会加载，在这个时候实例化INSTANCE，JVM保证INSTANCE只实例化一次
 * 类的静态属性只会在第一次加载类的时候初始化，类在初始化的时候，别的线程是无法进入的
 * Create by shengong on 2019-06-04 00:19
 */
public class Singleton01 {
    // 将构造函数设为private 避免调用默认函数创建对象
    private Singleton01(){}

    // 创建静态内部类 声明为private 使得这个方法只能在这个类中访问
    private static class SingletonHolder{
        private static final Singleton01 INSTANCE = new Singleton01();
    }
    public static Singleton01 getInstance(){
        return SingletonHolder.INSTANCE;
    }

}
